import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)

export default new Vuex.Store({
  // 全局数据存储,修改为函数返回值的形式
  state: {
    // 全局数据,token在登录成功后写入vuex中
    token: "",
    roleName: "",
    // 用户信息
    // 头像信息部署时替换为真实的头像地址
    avatarUrl: "https://picsum.photos/100/100?1",
    nickName: "User",
    // 用户id
    userId: null
  },
  // 类似于计算属性数据有一个缓存性，只有当数据发生变化时才会重新计算
  getters: {
  },
  // mutations定义的是全局数据的修改函数，主要是方便知道在哪修改的
  // 处理同步的
  mutations: {
    setToken(state, token) {
      state.token = token
    },
    setRoleName(state, roleName) {
      state.roleName = roleName
    },
    setAvatarUrl(state, avatarUrl) {
      state.avatarUrl = avatarUrl
    },
    setNickName(state, nickName) {
      state.nickName = nickName
    },
    setUserId(state, userId) {
      state.userId = userId
    }


  },
  // 处理异步数据包装
  actions: {
  },
  // 分模块管理，在一个大的系统中可能包含多个模块，针对全局数据分模块管理
  modules: {
  }
})
